/**
 * Copyright (c) 2020-2021 浦东大爷 All rights reserved.
 * 机会永远都是留给有准备的人
 */
package com.job.moudle4.task2;

import java.io.File;

/**
 * @author: gitwo
 * @date: 2020-11-27
 * @description:实现将指定目录中的所有内容删除，包含子目录中的内容都要全部删除。
 */
public class FileSystemTest {

    /**
     * 通过递归的方式删除某个路径下所有文件和目录
     * 1. 如果路径不存在，则直接return true
     * 2. 如果路径是个文件，则直接删除文件。 return true
     * 3. 否则获取目录下所有文件和目录
     *  3.1. 将目录下所有文件和目录递归调用方法
     *  3.2 重复第一步，第二步和第三步
     * 4. 最后删除目录（这个地方直接删除记录，因为递归以后，所有文件都已经删除掉了，剩下的肯定是个空目录，所以可以直接删除
     * 5. return true
     * @param path
     * @return
     */
    public static Boolean delete(File path) {
        if(!path.exists()) return true;
        if(path.isFile()) {
            System.out.println("删除文件" + path.getAbsolutePath());
            path.delete();
            return true;
        }
        File[] files = path.listFiles();
        for(File pa: files) {
            delete(pa);
        }
        System.out.println("删除目录" + path.getAbsolutePath());
        path.delete();
        return true;
    }

    public static void main(String[] args) {
        if(delete(new File("d:/data"))) System.out.println("删除成功");
    }
}
